<template>
  <div class="app-container">
    <!--工具栏-->
    <div class="head-container">
      <div v-if="crud.props.searchToggle">
        <!-- 搜索 -->
        <el-input v-model="query.blurry" clearable size="small" placeholder="模糊搜索" style="width: 200px;" class="filter-item" @keyup.enter.native="crud.toQuery" />
        <el-select
          v-model="query.bisHljgSsqx"
          clearable
          size="small"
          placeholder="所属区县"
          class="filter-item"
          style="width: 150px"
          @change="crud.toQuery"
        >
          <el-option
            v-for="item in dict.ccs"
            :key="item.id"
            :label="item.label"
            :value="item.value"
          />
        </el-select>
        <rrOperation :crud="crud" />
      </div>
      <!--如果想在工具栏加入更多按钮，可以使用插槽方式， slot = 'left' or 'right'-->
      <crudOperation :permission="permission" />
      <!--表单组件-->
      <el-dialog :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="840px">
        <el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="140px">
          <el-row>
            <el-col :span="12">
              <el-form-item label="企业名称" prop="bisGsglQymc">
                <el-input v-model="form.bisGsglQymc" style="width: 220px;" />
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="定点医疗机构编号" prop="bisGsglYljgdm">
                <el-input v-model="form.bisGsglYljgdm" style="width: 220px;" />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="联系人" prop="bisGsglLxr">
                <el-input v-model="form.bisGsglLxr" style="width: 220px;" />
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="联系人电话" prop="bisGsglLxrdh">
                <el-input v-model="form.bisGsglLxrdh" style="width: 220px;" />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="所属区县" prop="bisGsglSsqx">
                <el-select v-model="form.bisGsglSsqx" filterable placeholder="请选择" style="width: 220px;">
                  <el-option
                    v-for="item in dict.ccs"
                    :key="item.id"
                    :label="item.label"
                    :value="item.value"
                  />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="注册地址" prop="bisGsglZcdz">
                <el-input v-model="form.bisGsglZcdz" style="width: 220px;" />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row />
          <el-row>
            <el-col :span="12">
              <el-form-item label="护理员人数" prop="bisGsglHlyrs">
                <el-input v-model="form.bisGsglHlyrs" style="width: 220px;" />
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="医保统筹区划" prop="bisGsglYbqh">
                <el-select
                  v-model="form.bisGsglYbqh"
                  style="width: 220px;"
                  placeholder="请选择"
                >
                  <el-option
                    v-for="item in dict.ccstcqh"
                    :key="item.label"
                    :label="item.label"
                    :value="item.value"
                  />
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="服务类型" prop="bisGsglChjgddfwlx">
                <el-select v-model="form.bisGsglChjgddfwlx" filterable placeholder="请选择" style="width: 220px;">
                  <el-option
                    v-for="item in dict.jglx"
                    :key="item.id"
                    :label="item.label"
                    :value="item.value"
                  />
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="护理类型" prop="bisGsglCqhlfwlx">
                <el-select v-model="form.bisGsglCqhlfwlx" multiple placeholder="请选择" style="width: 220px;">
                  <el-option
                    v-for="item in dict.chfwlx"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  />
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="10">
              <el-form-item label="是否代为管理">
                <el-checkbox v-model="isCiManager" label="是否代为管理" border />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row v-if="isCiManager">
            <el-col :span="24">
              <el-form-item label="商保公司" prop="sbgs.bisGsglId">
                <el-select
                  v-model="form.sbgs.bisGsglId"
                  style="width: 500px"
                  placeholder="选择商保公司"
                >
                  <el-option
                    v-for="item in allSbgs"
                    :key="item.bisGsglQymc"
                    :label="item.bisGsglQymc"
                    :value="item.bisGsglId"
                  />
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="10">
              <el-form-item label="是否专业评估">
                <el-checkbox v-model="isPaManager" label="是否专业评估" border />
              </el-form-item>
            </el-col>
          </el-row>
          <el-row v-if="isPaManager">
            <el-col :span="24">
              <el-form-item label="评估公司" prop="pggs.bisGsglId">
                <el-select
                  v-model="form.pggs.bisGsglId"
                  style="width: 500px"
                  placeholder="选择评估公司"
                >
                  <el-option
                    v-for="item in allPggs"
                    :key="item.bisGsglQymc"
                    :label="item.bisGsglQymc"
                    :value="item.bisGsglId"
                  />
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
        </el-form>
        <div slot="footer" class="dialog-footer">
          <el-button type="text" @click="crud.cancelCU">取消</el-button>
          <el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
        </div>
      </el-dialog>
      <!--表格渲染-->
      <el-table ref="table" v-loading="crud.loading" :data="crud.data" size="small" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
        <el-table-column type="selection" width="55" />
        <el-table-column prop="bisGsglYljgdm" label="医疗机构代码" align="center" />
        <el-table-column prop="bisGsglQymc" label="企业名称" />
        <el-table-column prop="bisGsglLxr" label="联系人" align="center" />
        <el-table-column prop="bisGsglSsqx" label="所属区县" align="center">
          <template slot-scope="scope">
            {{ dict.label.ccs[scope.row.bisGsglSsqx] }}
          </template>
        </el-table-column>
        <el-table-column prop="bisGsglChjgddfwlx" label="服务类型" align="center">
          <template slot-scope="scope">
            {{ dict.label.jglx[scope.row.bisGsglChjgddfwlx] }}
          </template>
        </el-table-column>
        <el-table-column prop="bisGsglCqhlfwlx" label="护理类型" align="center">
          <template slot-scope="scope">
            {{ ((scope.row.bisGsglCqhlfwlx.indexOf('01') != -1) && (scope.row.bisGsglCqhlfwlx.indexOf('04') != -1)) ? '生活照料/医疗护理' :
              scope.row.bisGsglCqhlfwlx.indexOf('01') != -1 ? '生活照料' : '医疗护理' }}
          </template>
        </el-table-column>
        <el-table-column prop="sbgs.bisGsglQymc" label="商保公司" align="center" />
        <el-table-column prop="pggs.bisGsglQymc" label="评估公司" align="center" />
        <el-table-column v-if="checkPer(['admin','hljg:edit','hljg:del'])" label="操作" width="150px" align="center">
          <template slot-scope="scope">
            <udOperation
              :data="scope.row"
              :permission="permission"
            />
          </template>
        </el-table-column>
      </el-table>
      <!--分页组件-->
      <pagination />
    </div>
  </div>
</template>

<script>
import crudHljg from '@/api/business/hljg'
import { getAllSbgs } from '@/api/business/sbgs'
import { getAllPggs } from '@/api/business/pggs'
import CRUD, { presenter, header, form, crud } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'

const defaultForm = { bisGsglId: null, bisGsglUserId: null, bisGsglQymc: null, bisGsglTyshxydm: null, bisGsglLxr: null, bisGsglLxrdh: null, bisGsglSsqx: null, bisGsglZcdz: null, bisGsglYbqh: null, bisGsglYhdl: null, bisGsglKhhmc: null, bisGsglKhhid: null, bisGsglYhzh: null, bisGsglYhhm: null, bisGsglGslx: null, bisGsglYljgdm: null, bisGsglHljgbm: null, bisGsglHtksrq: null, bisGsglHtjsrq: null, bisGsglChjgddfwlx: null, bisGsglCws: null, bisGsglHlyrs: null, bisGsglCqhlfwlx: null, bisGsglJd: null, bisGsglWd: null, sbgs: { bisGsglId: null }, pggs: { bisGsglId: null }, hljgTcs: [], ywlx: null, lrr: null, lrrxm: null, lrbm: null, lrbmmc: null, lrsj: null, gxr: null, gxrxm: null, gxbm: null, gxbmmc: null, gxsj: null, sfyx: null, bz: null }

const tempTcs = []
const defaultTempTcs = []
let selectTempTcs = []
let others = []
export default {
  name: 'Hljg',
  components: { pagination, crudOperation, rrOperation, udOperation },
  mixins: [presenter(), header(), form(defaultForm), crud()],
  dicts: ['fwcsxz', 'jglx', 'ccs', 'ccstcqh', 'chfwlx'],
  cruds() {
    return CRUD({ title: '护理机构', url: 'api/hljg', idField: 'bisGsglId', sort: 'bisGsglId,desc', crudMethod: { ...crudHljg }})
  },
  data() {
    return {
      checked: false,
      tcqhDatas: [],
      allSbgs: [],
      allPggs: [],
      isCiManager: false,
      isPaManager: false,
      ciMessage: '否',
      paMessage: '否',
      permission: {
        add: ['admin', 'hljg:add'],
        edit: ['admin', 'hljg:edit'],
        del: ['admin', 'hljg:del']
      },
      rules: {
        bisGsglQymc: [
          { required: true, message: '企业名称不能为空', trigger: 'blur' }
        ],
        bisGsglLxr: [
          { required: true, message: '联系人不能为空', trigger: 'blur' }
        ],
        bisGsglLxrdh: [
          { required: true, message: '联系人电话不能为空', trigger: 'blur' }
        ],
        bisGsglSsqx: [
          { required: true, message: '所属区县不能为空', trigger: 'blur' }
        ],
        bisGsglZcdz: [
          { required: true, message: '注册地址不能为空', trigger: 'blur' }
        ]
      },
      queryTypeOptions: [
        { key: 'bisGsglQymc', display_name: '企业名称' },
        { key: 'bisGsglLxr', display_name: '联系人' },
        { key: 'bisGsglLxrdh', display_name: '联系人电话' },
        { key: 'bisGsglSsqx', display_name: '所属区县' },
        { key: 'bisGsglZcdz', display_name: '注册地址' }
      ]
    }
  },
  methods: {
    // 钩子：在获取表格数据之前执行，false 则代表不获取数据
    [CRUD.HOOK.beforeRefresh]() {
      return true
    },
    // 新增前将多选的值设置为空
    [CRUD.HOOK.beforeToAdd]() {
      this.tcqhDatas = []
      this.getAllSbgs()
      this.getAllPggs()
    },
    // 初始化编辑时候的角色与岗位
    [CRUD.HOOK.beforeToEdit](crud, form) {
      console.log('beforeToEdit')
      console.log('dict.chfwlx:', this.dict.chfwlx)
      const tem = this.form.bisGsglCqhlfwlx.replaceAll('\"', '').replaceAll('[', '').replaceAll(']', '')
      console.log('form.bisGsglCqhlfwlx:', tem)
      console.log('form.bisGsglCqhlfwlx:', tem.split(','))
      this.form.bisGsglCqhlfwlx = tem.split(',')
      this.getAllSbgs()
      this.getAllPggs()
      this.isCiManager = false
      this.isPaManager = false
      this.isCiManager = this.form.sbgs.bisGsglId === null ? this.isCiManager : true
      this.isPaManager = this.form.pggs.bisGsglId === null ? this.isPaManager : true
      this.ciMessage = this.isCiManager ? '是' : '否'
      this.paMessage = this.isPaManager ? '是' : '否'
    },
    // 提交前做的操作
    [CRUD.HOOK.afterValidateCU](crud) {
      console.log('dict.chfwlx:', this.dict.chfwlx)
      console.log('form.bisGsglCqhlfwlx:', this.form.bisGsglCqhlfwlx)
      if (!this.isCiManager) {
        this.form.sbgs = null
      }
      if (!this.isPaManager) {
        this.form.pggs = null
      }
      others.forEach(function(data, index) {
        const tc = { tcqhId: data }
        tempTcs.push(tc)
      })
      return true
    },
    selectAll() {
      console.log('selectAll')
      this.tcqhDatas = []
      const _this = this
      if (this.checked) {
        this.dict.ccstcqh.forEach((item) => {
          _this.tcqhDatas.push(item.value)
          console.log(item)
        })
      } else {
        this.tcqhDatas = []
      }
    },
    changeSelect(val) {
      console.log('changeSelect')
      selectTempTcs = []
      /*  tempTcs.forEach(function(tcObj, index2) {
        val.forEach(function(data, index) {
          const tcqh = { tcqhId: data }
          console.log(tcObj.tcqhId === data)
          console.log(tcObj.tcqhId+'----'+data)
        })
      })*/
      val.forEach(function(data, index) {
        const tcqh = { tcqhId: data }
        selectTempTcs.push(tcqh)
      })
      console.log(defaultTempTcs)
      console.log(selectTempTcs)

      const _arr1 = defaultTempTcs.filter(item1 => !selectTempTcs.includes(item1))
      const _arr2 = selectTempTcs.filter(item2 => !defaultTempTcs.includes(item2))

      others = _arr1.concat(_arr2)
      console.log(others)
    },
    deleteTag(value) {
      tempTcs.forEach(function(data, index) {
        if (data.tcqhId === value) {
          tempTcs.splice(index, value)
        }
      })
    },
    // 获取弹窗内商保公司数据
    getAllSbgs() {
      getAllSbgs().then(res => {
        this.allSbgs = res.content
      }).catch(() => { })
    },
    // 获取弹窗内评估公司数据
    getAllPggs() {
      getAllPggs().then(res => {
        this.allPggs = res.content
      }).catch(() => { })
    }
  }
}
</script>

<style scoped>
.el-checkbox {
  text-align: right;
  width: 90%;
}
</style>
